
// //设备登录
//  let login = require("./login.js");
// login.deviceLogin()


auto.waitFor();
var path = "./ncsj.js";
if (!files.exists(path)) {
    toast("脚本文件不存在: " + path);
    exit();
}

// if(!requestScreenCapture()){
//     toast("请求截图失败,即将退出");
//     exit();
// }

var show = false
var isBegin = false
var isFirstLoad = true

var storage = storages.create("com.axie.tools.storages");

storage.put("is_end", false)


var window = floaty.window(
    <frame>
        <horizontal>
            <vertical>
                <button id="action" text="开始运行" w="90" h="40" bg="#77ffffff" />
                {/* <button id="cardText" text="请选择" w="90" h="40" bg="#77ffffff" />
                <button id="select" text="收起选择" w="90" h="40" bg="#55ffffff" />
                <button id="endStart" text="继续:否" w="90" h="40" bg="#55ffffff" /> */}
            </vertical>
            {/* <vertical id="cardBox">
                <button id="card0" text="自动" w="60" h="40" bg="#55ffffff" />
                <button id="card5" text="5" w="60" h="40" bg="#55ffffff" />
                <button id="card9" text="9" w="60" h="40" bg="#55ffffff" />
                <button id="card11" text="11" w="60" h="40" bg="#55ffffff" />
                <button id="card13" text="13" w="60" h="40" bg="#55ffffff" />
                <button id="card14" text="14" w="60" h="40" bg="#55ffffff" />
            </vertical>
            <vertical id="cardBox2">
                <button id="card15" text="15" w="60" h="40" bg="#55ffffff" />
                <button id="card17" text="17" w="60" h="40" bg="#55ffffff" />
                <button id="card18" text="18" w="60" h="40" bg="#55ffffff" />
                <button id="card19" text="19" w="60" h="40" bg="#55ffffff" />
                <button id="card20" text="20" w="60" h="40" bg="#55ffffff" />
                <button id="card21" text="21" w="60" h="40" bg="#55ffffff" />
            </vertical> */}
        </horizontal>
    </frame>
);
// 调整window的位置
window.setPosition(0, 140)

setInterval(() => {

    if (isFirstLoad) {
        var card = storage.get("card")
        if (typeof(card) == "undefined"){ 
            card = 0
        }
        console.log( "card", card )
        // if (card === 0) {
        //     window.cardText.setText("自动");
        // } else{
        //     window.cardText.setText("刷第" + card + "关");
        // }
        
        isFirstLoad = false
    }

    const isEnd = storage.get("is_end")
    const needContinue = storage.get("end_start")
    // console.log("is end :::", isEnd )


    ui.run(function () {

        let bgColor = "#99ff00ff"

        if (isEnd && needContinue === 1) {
            bgColor = "#99ffa500"

        } else if (isEnd) {
            bgColor = "#99008000"

        } else {
        }

        // window.action.setBackgroundColor(10066329);
        // window.action.setTextColor(0x777777)

        if (isBegin) {
            window.action.attr("textColor", "#ffffff");
            window.action.attr("bg", bgColor);

        } else {
            window.action.attr("textColor", "#000000");
            window.action.attr("bg", "#77ffffff")
        }


        // if (isBegin) {
        //     if (show) {
        //         // window.action.setText("好看")
        //         window.action.attr("textColor", "#ffffff");
        //         window.action.attr("bg", bgColor);
        //     } else {
        //         // window.action.setText("好看111")
        //         window.action.attr("textColor", "#000000");
        //         window.action.attr("bg", "#77ffffff")
        //     }
        //     show = !show
        // }
    });

}, 1000);

var execution = null;

//记录按键被按下时的触摸坐标
var x = 300,
    y = 300;
//记录按键被按下时的悬浮窗位置
var windowX, windowY;
//记录按键被按下的时间以便判断长按等动作
var downTime;

window.action.setOnTouchListener(function (view, event) {
    switch (event.getAction()) {
        case event.ACTION_DOWN:
            x = event.getRawX();
            y = event.getRawY();
            windowX = window.getX();
            windowY = window.getY();
            downTime = new Date().getTime();
            return true;
        case event.ACTION_MOVE:
            //移动手指时调整悬浮窗位置
            window.setPosition(windowX + (event.getRawX() - x),
                windowY + (event.getRawY() - y));
            //如果按下的时间超过1.5秒判断为长按，退出脚本
            if (new Date().getTime() - downTime > 3000) {
                exit();
            }
            return true;
        case event.ACTION_UP:
            //手指弹起时如果偏移很小则判断为点击
            if (Math.abs(event.getRawY() - y) < 5 && Math.abs(event.getRawX() - x) < 5) {
                onClick();
            }
            return true;
    }
    return true;
});

function onClick() {

    // console.log("点击了按钮" )

    if (isBegin === false) {
        storage.put("is_end", false)
        execution = engines.execScriptFile(path);
        window.action.setText('停止运行');
        isBegin = true
    } else {
        if (execution) {
            execution.getEngine().forceStop();
        }
        window.action.setText('开始运行');
        isBegin = false

        ui.run(function () {

            window.action.attr("textColor", "#000000");
            window.action.attr("bg", "#77ffffff")
        })
    }
}

// ui.run(function () {

//     window.select.click(() => {
//         if (window.select.getText() == "收起选择") {
//             window.select.setText("选择关卡");
//             window.cardBox.visibility = 8;
//             window.cardBox2.visibility = 8;
//             toast("关卡已隐藏");
//         } else {
//             window.select.setText("收起选择");
//             window.cardBox.visibility = 0;
//             window.cardBox2.visibility = 0;
//             toast("关卡已显示");
//         }
//     })

//     window.cardText.click(() => {
//         if (window.cardBox.visibility === 0) {
//             window.cardBox.visibility = 8;
//             window.cardBox2.visibility = 8;
//             toast("关卡已隐藏");
//         } else {
//             window.cardBox.visibility = 0;
//             window.cardBox2.visibility = 0;
//             toast("关卡已显示");
//         }
//     })

//     window.endStart.click(() => {
//         if (window.endStart.getText() == "继续:否") {
//             window.endStart.setText("继续:是");
//             storage.put("end_start", 1)
//         } else {
//             window.endStart.setText("继续:否");
//             storage.put("end_start", 0)
//         }
//     })

//     window.card0.click(() => {
//         storage.put("card", 0)
//         window.cardText.setText("自动");
//     })

//     window.card5.click(() => {
//         storage.put("card", 5)
//         window.cardText.setText("刷第5关");
//     })

//     window.card9.click(() => {
//         storage.put("card", 9)
//         window.cardText.setText("刷第9关");
//     })

//     // window.card10.click(() => {
//     //     storage.put("card", 10)
//     //     window.cardText.setText("刷第10关");
//     // })

//     window.card11.click(() => {
//         storage.put("card", 11)
//         window.cardText.setText("刷第11关");
//     })

//     // window.card12.click(() => {
//     //     storage.put("card", 12)
//     //     window.cardText.setText("刷第12关");
//     // })

//     window.card13.click(() => {
//         storage.put("card", 13)
//         window.cardText.setText("刷第13关");
//     })

//     window.card14.click(() => {
//         storage.put("card", 14)
//         window.cardText.setText("刷第14关");
//     })

//     window.card15.click(() => {
//         storage.put("card", 15)
//         window.cardText.setText("刷第15关");
//     })
//     // window.card16.click(() => {
//     //     storage.put("card", 16)
//     //     window.cardText.setText("刷第16关");
//     // })
//     window.card17.click(() => {
//         storage.put("card", 17)
//         window.cardText.setText("刷第17关");
//     })
//     window.card18.click(() => {
//         storage.put("card", 18)
//         window.cardText.setText("刷第18关");
//     })
//     window.card19.click(() => {
//         storage.put("card", 19)
//         window.cardText.setText("刷第19关");
//     })
//     window.card20.click(() => {
//         storage.put("card", 20)
//         window.cardText.setText("刷第20关");
//     })
//     window.card21.click(() => {
//         storage.put("card", 21)
//         window.cardText.setText("刷第21关");
//     })
// })


// threads.start(function(){
//     var storage = storages.create("is_verify");
//     storage.put("verify", 0);
//     while(true){
//         var img = captureScreen();

//         // var img = images.read("/sdcard/3/11.jpg");
//         // images.save(img, "/sdcard/1/test.png");
//         var verify = images.read("/sdcard/1/verify.png");
//         var p = myFindImage(img, verify,0.8);
//         verify.recycle()
//         if(p){
//             toast("开始进行认证码操作");
//             storage.put("verify", 1);
//             var clip2 = images.clip(img, p.x-250*scaleWidth, p.y+125*scaleHeight,1100,70);
//             var arr =  [-1,-1,-1,-1,-1];
//             let templet = { '1': 1,'2':2,'3':3,'4':4,'5':5,'w':3,'m':3,'n':2,'N':2,'J':1,'j':1,'T':1,'t':1, 'W':3,"M":3,'-1':-1}
//             for(var k = 0;k<5;k++){
//                 var clip3 = images.clip(clip2, k*225*scaleWidth, 0,70,70);
//                 // images.save(clip3, "/sdcard/3/11"+k+".png");
//                 threads.start(function(){
//                     let i=k
//                     var count = Ttshitu_Ocr_FindWord(7,images.toBase64(clip3))
//                     if ( typeof  count ==  "undefined"){
//                         count = '-1'
//                     }
//                     try {
//                         arr[i]= templet[count];
//                     } catch (error) {
//                         arr[i] = -1
//                     }
//                 });
                
//                 sleep(200);
//                 clip3.recycle()
//             }
//             while(true){
//                 console.log(arr )
//                 var count = 0 
//                 var arr1 =  [-1,-1,-1,-1,-1];
//                 var arr1_lock =  [-1,-1,-1,-1,-1];
//                 var index1 = 0
//                 arr.forEach((match,index) => {
//                     if(match >-1){
//                         count ++
//                         arr1[match-1]=0
//                     }else{
//                         index1 = index
//                     }
//                 });
//                 if(count >= 4){
//                     arr1.forEach((match,index) => {
//                         if(match <=-1){
//                             console.log(index1,index )
//                             arr[index1] = index+1
//                         }
//                     });
                    
//                     for (var i = 0; i < arr.length; i++) {
//                         arr1_lock[i] = arr[i];
//                     }
//                     verify_click(arr1_lock,p)
//                     break
//                 }
//                 sleep(200);
//             }
        
//             threads.shutDownAll()
//             storage.put("verify", 0);
//             clip2.recycle();
//         }else{
//             toast("无需认证");
//         }
//         img.recycle(); 
//         sleep(3000)
//     }
// });

function onClick() {
    if (window.action.getText() == '开始运行') {
        execution = engines.execScriptFile(path);
        window.action.setText('停止运行');
    } else {
        if (execution) {
            execution.getEngine().forceStop();
            threads.shutDownAll()
        }
        window.action.setText('开始运行');
    }
}

//点击验证码
function verify_click(arr_lock,p) {
        
    //识别结束
    console.log("识别结束" ,arr_lock)
    //点击验证码
    var point = new Array(5)
    arr_lock.forEach((element,index) => {
        var item = {
            x: p.x-250*scaleWidth+index*225*scaleWidth+30,
            y: p.y+125*scaleHeight+30, 
        }
        console.log(element,item )
        point[element-1] = item
    });
    console.log('开始点击' ,point)
    point.forEach((element,index) => {
        var clip3 = images.clip(img, element.x, element.y,70,70);
        images.save(clip3, "/sdcard/3/111"+(index+1)+".png");
        clip3.recycle()
        click(element.x,element.y);
        sleep(200)
    });
}
//找单张图
function myFindImage(img,templ,threshold){
    var templ1 = images.scale(templ, 1, 1)
    var p = findImage(img, templ1,{
        threshold: threshold,
    });
    templ1.recycle();
    if(p){
        return p
    }
    var p1 = findImage(img, templ,{
        threshold: threshold,
    });
    return p1
}



